Publications এবং Dependencies ডিফাইন করা

Java Technologies - অ্যাপাচি আইভি (Apache IVY) IVY.xml ফাইল ডিফাইন করা |
130
130

Apache Ivy একটি অত্যন্ত শক্তিশালী dependency management টুল যা Java প্রোজেক্টে বাইরের লাইব্রেরি বা ডিপেন্ডেন্সি সহজে ম্যানেজ করতে সহায়তা করে। Ivy দিয়ে আপনি আপনার প্রোজেক্টে dependencies এবং publications কিভাবে ডিফাইন করবেন তা ব্যাখ্যা করা হবে।

১. Dependencies ডিফাইন করা

Dependencies হল সেই লাইব্রেরি বা ফাইলগুলি যা আপনার প্রোজেক্টের কাজের জন্য প্রয়োজন। Ivy-এ ডিপেন্ডেন্সি ডিফাইন করতে আপনি ivy.xml ফাইল ব্যবহার করেন।

Dependencies ডিফাইন করার সময়:

  • লাইব্রেরির নাম
  • সংস্করণ
  • রিপোজিটরি নির্ধারণ করা হয়।
  • এছাড়া, আপনি ট্রান্সিটিভ (transitive) ডিপেন্ডেন্সি এবং ভার্সন কনফ্লিক্ট হ্যান্ডলিংও করতে পারেন।

Dependencies ডিফাইন করার উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app" />
    
    <dependencies>
        <!-- External dependencies -->
        <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
        <dependency org="junit" name="junit" rev="4.13.1"/>
    </dependencies>
</ivy-module>

এখানে:

  • <info> ট্যাগের মাধ্যমে আপনার প্রোজেক্টের organisation (গ্রুপ) এবং module (মডিউল) নাম দেওয়া হয়েছে।
  • <dependencies> ট্যাগের মধ্যে আপনার প্রোজেক্টের dependencies ডিফাইন করা হয়েছে, যেমন commons-lang3 এবং JUnit

Dependency Options:

  • org: লাইব্রেরির গ্রুপ বা অর্গানাইজেশন।
  • name: লাইব্রেরির নাম।
  • rev: লাইব্রেরির সংস্করণ।

২. Transitive Dependencies

যখন আপনি একটি লাইব্রেরি ব্যবহার করেন, সেই লাইব্রেরির নিজস্ব ডিপেন্ডেন্সি থাকতে পারে। Ivy এই ডিপেন্ডেন্সি গুলিকেও স্বয়ংক্রিয়ভাবে ডাউনলোড করে, এদের transitive dependencies বলা হয়।

ধরা যাক, commons-lang3 লাইব্রেরিটি commons-collections লাইব্রেরির উপর নির্ভরশীল। তাহলে Ivy এই লাইব্রেরিটিকেও ডাউনলোড করবে যখন আপনি commons-lang3 ডাউনলোড করবেন।

<dependencies>
    <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
</dependencies>

এখানে:

  • commons-lang3 এর ডিপেন্ডেন্সির মধ্যে commons-collections স্বয়ংক্রিয়ভাবে ডাউনলোড হবে।

৩. Version Conflict Resolution

যখন দুটি বা তার বেশি ডিপেন্ডেন্সি একই লাইব্রেরির ভিন্ন সংস্করণে নির্ভরশীল থাকে, তখন Ivy স্বয়ংক্রিয়ভাবে একটি সংস্করণ নির্বাচন করে। আপনি চাইলে Ivy কে version conflict হ্যান্ডল করার জন্য কনফিগারও করতে পারেন।

উদাহরণ:

<dependencies>
    <dependency org="org.apache.commons" name="commons-lang3" rev="3.12.0"/>
    <dependency org="org.apache.commons" name="commons-lang3" rev="3.10.0"/>
</dependencies>

এখানে:

  • যদি দুটি ডিপেন্ডেন্সি commons-lang3 এর দুটি ভিন্ন সংস্করণে নির্ভরশীল হয়, তবে Ivy সর্বশেষ সংস্করণ (যেমন 3.12.0) রেজলভ করবে।

৪. Publications ডিফাইন করা

Publications হল সেই ফাইল বা আর্টিফ্যাক্টগুলি যা আপনার প্রোজেক্ট তৈরি করবে এবং অন্যদের জন্য উপলব্ধ হবে (যেমন লাইব্রেরি)। যখন আপনি একটি লাইব্রেরি তৈরি করেন বা প্রকাশ করেন, তখন সেই লাইব্রেরি Ivy রিপোজিটরিতে পাবলিশ হয় এবং অন্যান্য প্রোজেক্ট সেটি ব্যবহার করতে পারে।

Ivy-এ পাবলিকেশন ডিফাইন করার জন্য ivy.xml ফাইলের মধ্যে <publications> ট্যাগ ব্যবহার করা হয়। এটি সাধারণত JAR, WAR, EAR, অথবা অন্য কোনো আর্কাইভ ফাইল হবে।

Publications ডিফাইন করার উদাহরণ:

<ivy-module version="2.0">
    <info organisation="com.example" module="my-app"/>
    
    <publications>
        <artifact name="my-app" type="jar" ext="jar"/>
    </publications>
</ivy-module>

এখানে:

  • <publications> ট্যাগের মাধ্যমে আপনি যে ফাইলটি পাবলিশ করতে চান সেটি নির্ধারণ করা হয়েছে। এখানে my-app.jar ফাইলটি পাবলিশ করা হবে।

Artifact Type:

  • name: Artifact এর নাম (যেমন my-app বা commons-lang3)
  • type: Artifact এর ধরনের ফাইল (যেমন jar, war)
  • ext: ফাইলের এক্সটেনশন (যেমন .jar)

৫. Artifact Publish এবং Retrieve

আপনার প্রোজেক্টের artifact পাবলিশ করার পর, আপনি এই artifact অন্য কোনো প্রোজেক্টে ব্যবহার করতে পারেন। Ivy লাইব্রেরি বা artifact ডাউনলোড করার জন্য ivy:retrieve টাস্ক ব্যবহার করে।

<target name="publish">
    <ivy:publish/>
</target>

<target name="retrieve">
    <ivy:retrieve/>
</target>
  • ivy:publish টাস্কটি artifact রিপোজিটরিতে পাবলিশ করবে।
  • ivy:retrieve টাস্কটি artifact রিপোজিটরি থেকে ডাউনলোড করবে।

৬. Custom Repositories

আপনি যদি নিজের Ivy রিপোজিটরি ব্যবহার করতে চান, তবে সেটি কনফিগার করতে পারেন।

<repositories>
    <repository name="central" url="https://repo.maven.apache.org/maven2"/>
    <repository name="private-repo" url="https://my-private-repo.com/ivy"/>
</repositories>

এখানে:

  • <repository> ট্যাগটি রিপোজিটরি URL এবং নাম নির্দেশ করে, যেখানে থেকে Ivy লাইব্রেরি ডাউনলোড বা আপলোড করবে।

সারাংশ

Apache Ivy একটি শক্তিশালী টুল যা Java প্রোজেক্টে ডিপেন্ডেন্সি ম্যানেজমেন্টে সহায়তা করে। Dependencies এবং Publications হল Ivy এর মূল ধারণা:

  • Dependencies: আপনার প্রোজেক্টের বাইরের লাইব্রেরি বা জার ফাইল, যেগুলি আপনার প্রোজেক্টের জন্য প্রয়োজনীয়।
  • Publications: আপনার প্রোজেক্টে তৈরি হওয়া লাইব্রেরি বা ফাইল, যেগুলি অন্য প্রোজেক্টে ব্যবহার করার জন্য পাবলিশ করা হয়।

এছাড়াও, Ivy ডিপেন্ডেন্সির রেজলভেশন, ভার্সন ম্যানেজমেন্ট, ট্রান্সিটিভ ডিপেন্ডেন্সি এবং কাস্টম রিপোজিটরি সাপোর্ট প্রদান করে। Ivy-এর মাধ্যমে আপনি লাইব্রেরি ম্যানেজমেন্টকে আরো সহজ এবং কার্যকরী করতে পারবেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion